package com.websai.servlets;

import com.sai.clases.Alumno;
import com.sai.clases.Profesor;
import com.sai.clases.Usuario;
import com.sai.transacciones.TUsuario;
import com.sai.utils.Utilities;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try {
            int metodo = Integer.parseInt(request.getParameter("metodo"));
            switch(metodo){
                case 0:
                    Loguear(request, response);
                    break;
                case 1:
                    Registrar(request, response);
                    break;
            }
        } finally { 
            
        }
    }
    
    public void Loguear(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        String matricula = request.getParameter("matricula");
        String contraseña = request.getParameter("contraseña");
        
        if(Utilities.isReallyEmptyOrNull(matricula) && Utilities.isReallyEmptyOrNull(contraseña)){
            out.print("Blanco");
        } else if(Utilities.isReallyEmptyOrNull(matricula)){
            out.print("Matricula");
        } else if(Utilities.isReallyEmptyOrNull(contraseña)){
            out.print("Contraseña");
        } else {
            Usuario usuario = new Usuario();
            usuario.setMatricula(matricula);
            usuario.setPassword(contraseña);
            
            Alumno alumno = TUsuario.ValidarLoginAlumno(usuario);
            if(alumno != null){
                out.print("<table border='0' cellpadding='2' cellspacing='2' width='1100'>"
                        + "<tr><td width='450'>Diseñada por: Eduardo Ponce ,Juan Aguilar y Uriel Nery</td>"
                        + "<td width='450'>Bienvenido " + alumno.getNombre() + " " + alumno.getApellidoP()
                        + "<input type='hidden' id='IdHD' size='10' value='" + alumno.getIdAlumno() + "' />"
                        + "<input type='hidden' id='MatriculaHD' size='10' value='"+ alumno.getMatricula() + "' />"
                        + "<input type='hidden' id='TipoUserHD' size='10' value='Alumno' />"
                        + "</td></tr></table>");
            } else {
                Profesor profesor = TUsuario.ValidarLoginProfesor(usuario);
                if(profesor != null){
                    out.print("<table border='0' cellpadding='2' cellspacing='2' width='1100'>"
                        + "<tr><td width='450'>Diseñada por: Eduardo Ponce Juan Aguilar y Uriel Nery </td>"
                        + "<td width='450'>Bienvenido " + profesor.getNombre() + " " + profesor.getApellidoP()
                        + "<input type='hidden' id='IdHD' size='10' value='" + profesor.getIdProfesor() + "' />"
                        + "<input type='hidden' id='MatriculaHD' size='10' value='"+ profesor.getMatricula() + "' />"
                        + "<input type='hidden' id='TipoUserHD' size='10' value='" + profesor.getTipo() + "' />"
                        + "</td></tr></table>");
                } else {
                    out.print("No");
                }
            }
        }
    }
    
    public void Registrar(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        String matricula = request.getParameter("matricula");
        String contraseña = request.getParameter("contraseña");
        String rcontraseña = request.getParameter("rcontraseña");
        
        if(Utilities.isReallyEmptyOrNull(matricula) && Utilities.isReallyEmptyOrNull(contraseña)){
            out.print("Blanco");
        } else if(Utilities.isReallyEmptyOrNull(matricula)){
            out.print("Matricula");
        } else if(Utilities.isReallyEmptyOrNull(contraseña)){
            out.print("Contraseña");
        } else if(Utilities.isReallyEmptyOrNull(rcontraseña)){
            out.print("RContraseña");
        } else {
            if(contraseña.equals(rcontraseña)){
                Usuario usuario = new Usuario();
                usuario.setMatricula(matricula);
                usuario.setPassword(contraseña);
                
                String resp = TUsuario.RegistrarContraseña(usuario);
                if(resp.equals("OK")){
                    out.print("OK");
                } else {
                    out.print(resp);
                }
            } else {
                out.print("Diferentes");
            }
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
